package com.levy.contronller.jvm.bytecode;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

/**
 * 针对方法调用的动态分派的过程，虚拟机会在类的方法去建立一个虚方法表的数据结构（virtual method table, vtable）
 * 针对invokeinterface的指令来说，虚拟机会建立一个叫做接口方法表的数据结构（interface method table, itable）
 */
public class MyTest7 {

    public static void main(String[] args) throws InterruptedException {
        Animal animal = new Animal();
        Animal dog = new Dog();
        animal.test("fdsfdsf");
        dog.test(new Date());
    }

}


class Animal{

    public void test(String str){
        System.out.println("animal "+ str);
    }

    public void test(Date date){
        System.out.println("animal "+date.toString());
    }
}

class Dog extends Animal{
    @Override
    public void test(Date date) {
        System.out.println("dog "+date.toString());
    }

    @Override
    public void test(String str) {

        System.out.println("dog "+str);
    }
}

